//////////////////////////////////////////////////////////////////////////////////
//
// 兼容旧版
//
////////////////////////////////////


var option_bar_line = {
    color: ['#4cabce', '#7755aa', '#e5624e'],
    tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' }},
    legend: {
        left: 'right',
        data: []
    },
    calculable: true,
    xAxis: [{
            type: 'category',
            axisTick: {show: false},
            axisLabel: {rotate: 20,},
            data: []
    }],
    yAxis: [ {type: 'value'}, {type: 'value'}],
    dataZoom: [{type: 'inside'}, { type: 'slider'}],
    series: [
        {
            name: '',
            type: 'bar',
            label: {  normal: {show: true,  formatter: "{c}",position: "top", color: 'blue' }},
            itemStyle: { normal: {barBorderRadius: [15, 0, 0, 0]}},
            barGap: 0,
            data: []
        },
        {
            name: '',
            type: 'bar',
            label: {  normal: {show: true,  formatter: "{c}",position: "top", color: 'purple' }},
            itemStyle: { normal: { barBorderRadius: [0, 10, 0, 0]}},
            data: []
        },
        {
            name: '',
            type: 'line',
            label: {  normal: {show: true,  formatter: "{c}",position: "top", color: 'red' }},
            yAxisIndex: 1,
            data: []
        },

    ]   
}


var option_lines = {
    color: ['#4cabce', '#7755aa', '#e5624e'],
    tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' }},
    legend: {
        left: 'right',
        data: []
    },
    calculable: true,
    xAxis: [{
            type: 'category',
            axisTick: {show: false},
            axisLabel: {rotate: 20,},
            data: []
    }],
    yAxis: [ {type: 'value', min: 'dataMin'}, {type: 'value', min: 'dataMin'}  ],
    dataZoom: [{type: 'inside',}, {type: 'slider'}],
    series: [
        {
            name: '',
            type: 'line',
            label: {  normal: {show: true,  formatter: "{c}",position: "top", color: 'blue' }},
            smooth: true,
            itemStyle: { normal: {barBorderRadius: [15, 0, 0, 0]}},
            data: []
        },
        {
            name: '',
            type: 'line',
            label: {  normal: {show: true,  formatter: "{c}",position: "top", color: 'red' }},
            smooth: true,
            data: []
        },
        {
            name: '',
            type: 'line',
            label: {  normal: {show: true,  formatter: "{c}",position: "top", color: 'purple' }},
            smooth: true,
            data: []
        },
        {
            name: '',
            type: 'line',
            label: {  normal: {show: true,  formatter: "{c}",position: "top", color: 'darkgreen' }},
            smooth: true,
            data: []
        },
        

    ]   
}




/////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//
//  以上兼容旧版
//
//
/////////////////////////////////////////////////////////////////////////////

var rd = rd || {};

rd.chart_option = {
    createNew: function(){
        var p = {};
        p.option = {
            title: {show: false},
            color: ['#4cabce', '#7755aa', '#e5624e', '#f85935'],
            tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' }},
            legend: {
                left: 'center',
                top: 'bottom',
                fontSize: 12,
                data: []
            },
            grid: {
                top: 30,
                left: '10%',
                width: '80%',
            },
            calculable: true,
            xAxis: [{
                    type: 'category',
                    axisTick: {show: false},
                    axisLabel: {fontSize: 12},
                    data: []
            }],
            yAxis: [
                {type: 'value', axisLabel: { fontSize: 12}}, 
                {type: 'value', axisLabel: { fontSize: 12}}, 
                {type: 'value', axisLabel: { fontSize: 12}}
            ],
            dataZoom: [{type: 'inside'}],
            series: []   
        }

        // 常规的阴影设定
        p.shadowCommen = {
            shadowBlur: 5,
            shadowColor: 'grey',
            shadowOffsetX: 2,
            shadowOffsetY: 2,
        }
        // 常规的文字阴影设定
        p.textShadowCommen = {
            textShadowBlur: 3,
            textShadowcolor: 'grey',
            textShadowOffsetX: 1,
            textshadowOffsetY: 1
        }
        
        // 追加系列add
        // 参数为对像数组，每组对像追加一个系列
        // 参数形式：[{name: 'XXX', type: 'bar'}, {name: 'XXX', type: 'bar'}, {name: 'XXX', type: 'bar'}]
        p.add_series = function(s){
            // 根据传参，确定每个系列的类型，
            // 同时将名称填写到系列中和图例中，保持其一至性。
            // console.log(s)
            for(let i = 0; i < s.length; i++){
                p.option.legend.data.push(s[i].name);
                let b = {name: s[i].name, type: s[i].type, data: []};
                if(s[i].type == 'bar'){
                    b.barMaxWidth = '30px';
                    b.itemStyle = {};
                    b.itemStyle.barBorderRadius = [2,2,0,0];
                }else if(s[i].type == 'line'){
                    // b.smooth = true;
                }else if(s[i].type == 'pie'){
                    
                }
                p.option.series.push(b);
            }
        }


        
        // 将横轴上形如 Y-m 格式的月份标签，仅1月时以及第一个标签增加年显示，其他各月显示月数
        p.month_format = function(){
            let s = {axisLabel: { formatter: function(v, i){
                let d = v.split("-");
                let str = d[1] ;
                if(Number(d[1]) == 1 || i === 0) {
                    str = v;
                }
                return str;
            }}}
            $.extend(true, p.option.xAxis[0], s);
            
        }
        
        // 
        p.date_format = function(){
            
            let s = {axisLabel: { formatter: function(v, i){
                var date = new Date(v);
                var texts = [(date.getMonth() + 1), date.getDate()];
                if (i === 0) {
                    texts.unshift(date.getFullYear());
                }
                return texts.join('/');
            }}}
            $.extend(true, p.option.xAxis[0], s);
            
        }

        p.set_xAxis_datas = function(data, fieldsnameList){ 
            // data 为源数据
            // fieldsnameList 数组，列出各横轴数据项对应源数据的字段名称
            for(let i in data){
                let x = data[i];
                for(let j in fieldsnameList){
                    let w = fieldsnameList[j];
                    p.option.xAxis[j].data.push(x[w]);
                }
            }
        }

        // 设置所有项的label，通过label子项JSON定义完成，其中show=true可省略；
        p.set_all_labels = function(seriesLabelOptions){
            for(let i in p.option.series){
                let x = p.option.series[i];
                x.label = x.label || {};
                x.label.show = true;
                rd.extend(true, x.label, seriesLabelOptions)
            }
        }

        p.set_all_items = function(seriesItemOptions){
            for(let i in p.option.series){
                let x = p.option.series[i];
                x.itemStyle = x.itemStyle || {};
                rd.extend(true, x.itemStyle, seriesItemOptions);
            }
        }

        p.set_all_emphasis = function(seriesLabelOptions, seriesItemOptions){
            for(let i in p.option.series){
                let x = p.option.series[i];
                x.emphasis = x.emphasis || {};
                x.emphasis.label = x.emphasis.label || {};
                x.emphasis.itemStyle = x.emphasis.itemStyle || {};
                rd.extend(true, x.emphasis, {label: seriesLabelOptions, itemStyle: seriesItemOptions});
            }
        }



        // 设置指定项（index指定）的label，通过label子项json定义完成。
        // 第二参数可以是对像options，也可以是字符串type
        // 第二参数为字符串type，用于定义特定方式的label
        // 
        p.set_label = function(index, options_or_type){
            let x = p.option.series[index];
            x.label = x.label || {};
            x.label.show = true;
            if(typeof options_or_type === 'object'){
                rd.extend(true, x.label, options_or_type);
            }else{
                if(options_or_type == '%'){
                    x.label.formatter = function(p){
                        return Number(p.data).toFixed(0) + "%";
                    }
                }else if(options_or_type == "万"){
                    x.label.formatter = function(p){
                        return (Number(p.data) / 10000).toFixed(0) + "万";
                    }
                }else{
                    x.label.formatter = function(p){
                        return p.data + options_or_type;
                    }
                }
            }
            
        }

        p.set_labels = function(param){
            for(let i in param){
                p.set_label(i, param[i])
            }
        }

        p.set_shadow = function(target){
            target.shadowBlur = 5;
            target.shadowOffsetX = 2;
            target.shadowOffsetY = 2;
        }

        // p.set_series_datas = function(data, fieldsSettingList){
        //     // data 为源数据
        //     // fieldsSettingList 函数数组，将指定的字段纳入运算函数中运算出需要的结果返回
        //     for(let i in data){
        //         let x = data[i];
        //         for(let j in fieldsSettingList){

        //             var w = fieldsSettingList[j](x);
        //             console.log(w)
        //             p.option.series[j].data.push(w);
        //         }
        //     }
        // }
        
        return p;
    }
}

